package com.hx.controller;//package com.hx.controller;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.ByteArrayOutputStream;
//import java.io.IOException;
//import java.nio.file.Files;
//import java.nio.file.Path;
//import java.nio.file.Paths;
//import java.util.Arrays;
//import java.util.Collections;
//import java.util.Comparator;
//import java.util.List;
//import java.util.regex.Matcher;
//import java.util.regex.Pattern;
//import java.util.stream.Collectors;
//
//import fr.opensagres.poi.xwpf.converter.pdf.PdfConverter;
//import fr.opensagres.poi.xwpf.converter.pdf.PdfOptions;
//import io.swagger.annotations.Api;
//import org.springframework.core.io.ByteArrayResource;
//import org.springframework.core.io.Resource;
//import org.springframework.http.ResponseEntity;
//import org.apache.poi.xwpf.usermodel.XWPFDocument;
////import org.apache.poi.xwpf.converter.pdf.PdfOptions;
////import org.apache.poi.xwpf.converter.pdf.PdfConverter;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//import org.springframework.web.bind.annotation.RestController;
//
///**
// * ClassName: DocumentController
// * Package: com.hxgis.controller
// * Description:
// *
// * @Author dhn
// * @Create 2024/1/31 11:56
// * @Version 1.0
// */
//@RestController
//@RequestMapping("/api/document")
//public class DocumentController {
//    private final String MONTH_PATH = "D:/ftp_data/month"; // 修改为你的文档存储路径
//    private final String QUARTER_PATH = "D:/ftp_data/quarter"; // 修改为你的文档存储路径
//
////    private final String MONTH_PATH = "/home/geli/hbnyWeatherReport/month"; // 修改为你的文档存储路径
////    private final String QUARTER_PATH = "/home/geli/hbnyWeatherReport/quarter"; // 修改为你的文档存储路径
//
//    @GetMapping("/monthLatest")
//    public ResponseEntity<Resource> getDocument(@RequestParam(required = false) String name) throws IOException {
//        File folder = new File(MONTH_PATH);
//        File[] files = folder.listFiles((dir, filename) -> filename.endsWith(".docx"));
//
//        if (files == null || files.length == 0) {
//            return ResponseEntity.notFound().build();
//        }
//
//        File fileToConvert;
//
//        if (name != null && !name.isEmpty()) {
//            // 用户选择了特定的文件
//            fileToConvert = Arrays.stream(files)
//                    .filter(file -> file.getName().equals(name))
//                    .findFirst()
//                    .orElse(null);
//        } else {
//            // 没有特定选择，找最新的文件
//            Pattern pattern = Pattern.compile("(\\d{4})年(\\d{2})月风光资源趋势预测\\.docx");
//            fileToConvert = Arrays.stream(files)
//                    .filter(file -> pattern.matcher(file.getName()).matches())
//                    .max(Comparator.comparingInt(file -> {
//                        Matcher matcher = pattern.matcher(file.getName());
//                        if (matcher.find()) {
//                            int year = Integer.parseInt(matcher.group(1));
//                            int month = Integer.parseInt(matcher.group(2));
//                            return year * 100 + month;
//                        }
//                        return 0;
//                    }))
//                    .orElse(null);
//        }
//
//        if (fileToConvert == null) {
//            return ResponseEntity.notFound().build();
//        }
//
//        // 以下为文件转换为PDF的代码
//        try (XWPFDocument document = new XWPFDocument(new FileInputStream(fileToConvert));
//             ByteArrayOutputStream out = new ByteArrayOutputStream()) {
//
//            PdfOptions options = PdfOptions.create();
//            PdfConverter.getInstance().convert(document, out, options);
//
//            byte[] pdfContent = out.toByteArray();
//            ByteArrayResource resource = new ByteArrayResource(pdfContent);
//
//            return ResponseEntity.ok()
//                    .contentLength(pdfContent.length)
//                    .header("Content-type", "application/pdf")
//                    .body(resource);
//        }
//    }
//
//
//    @GetMapping("/quarterLatest")
//    public ResponseEntity<Resource> quarterLatest(@RequestParam(required = false) String name) throws IOException {
//        File folder = new File(QUARTER_PATH);
//        File[] files = folder.listFiles((dir, filename) -> filename.endsWith(".docx"));
//
//        if (files == null || files.length == 0) {
//            return ResponseEntity.notFound().build();
//        }
//
//        File fileToConvert;
//
//        if (name != null && !name.isEmpty()) {
//            // 用户选择了特定的文件
//            fileToConvert = Arrays.stream(files)
//                    .filter(file -> file.getName().equals(name))
//                    .findFirst()
//                    .orElse(null);
//        } else {
//            // 没有特定选择，找最新的文件
//            Pattern pattern = Pattern.compile("(\\d{4})年(?:\\d{2})月-(\\d{4})年(?:\\d{2})月风光资源趋势预测\\.docx|" +
//                    "(\\d{4})年(?:\\d{2})-(\\d{2})月风光资源趋势预测\\.docx");
//            fileToConvert = Arrays.stream(files)
//                    .filter(file -> pattern.matcher(file.getName()).matches())
//                    .max(Comparator.comparingInt(file -> {
//                        Matcher matcher = pattern.matcher(file.getName());
//                        if (matcher.find()) {
//                            if (matcher.group(1) != null) {
//                                // 处理跨年文件名
//                                int yearStart = Integer.parseInt(matcher.group(1));
//                                int yearEnd = Integer.parseInt(matcher.group(2));
//                                return yearEnd * 100 + (matcher.group(4) != null ? Integer.parseInt(matcher.group(4)) : 0);
//                            } else if (matcher.group(3) != null) {
//                                // 处理同一年文件名
//                                int year = Integer.parseInt(matcher.group(3));
//                                int monthEnd = Integer.parseInt(matcher.group(4));
//                                return year * 100 + monthEnd;
//                            }
//                        }
//                        return 0;
//                    }))
//                    .orElse(null);
//        }
//
//        if (fileToConvert == null) {
//            return ResponseEntity.notFound().build();
//        }
//
//        // 文件转换为PDF的代码
//        try (XWPFDocument document = new XWPFDocument(new FileInputStream(fileToConvert));
//             ByteArrayOutputStream out = new ByteArrayOutputStream()) {
//
//            PdfOptions options = PdfOptions.create();
//            PdfConverter.getInstance().convert(document, out, options);
//
//            byte[] pdfContent = out.toByteArray();
//            ByteArrayResource resource = new ByteArrayResource(pdfContent);
//
//            return ResponseEntity.ok()
//                    .contentLength(pdfContent.length)
//                    .header("Content-type", "application/pdf")
//                    .body(resource);
//        }
//    }
//
//
//
//    @GetMapping("/monthList")
//    public List<String> listAllDocs() {
//        File folder = new File(MONTH_PATH);
//        // 修改为获取.docx文件
//        File[] files = folder.listFiles((dir, name) -> name.endsWith(".docx"));
//
//        if (files == null) {
//            return Collections.emptyList();
//        }
//
//        // 返回文件名列表
//        return Arrays.stream(files)
//                .map(File::getName)
//                .collect(Collectors.toList());
//    }
//
//    @GetMapping("/quarterList")
//    public List<String> quarterList() {
//        File folder = new File(QUARTER_PATH);
//        // 修改为获取.docx文件
//        File[] files = folder.listFiles((dir, name) -> name.endsWith(".docx"));
//
//        if (files == null) {
//            return Collections.emptyList();
//        }
//
//        // 返回文件名列表
//        return Arrays.stream(files)
//                .map(File::getName)
//                .collect(Collectors.toList());
//    }
//
//}
//
